/*******************************************************************************
* Имя файла: colorConsole.h
* Дата: 23-04-2024
* Разработчик: Андрей Подлегаев
* На основе кода: Dr. Moritz Lehmann,
* theoretical physicist at the University of Bayreuth
* Лицензия: BSD
* Описание: Использование цветов в выводе консоли
* *****************************************************************************/
#ifndef COLORCONSOLE_H
#define COLORCONSOLE_H

#include <iostream>
#include <string>
#include <iomanip>

#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
#define VC_EXTRALEAN
#include <Windows.h> // for displaying colors
#endif // Windows

enum Color {
  COLOR_BLACK,
  COLOR_DARK_BLUE,
  COLOR_DARK_GREEN,
  COLOR_LIGHT_BLUE,
  COLOR_DARK_RED,
  COLOR_MAGENTA,
  COLOR_ORENGE,
  COLOR_LIGHT_GRAY,
  COLOR_GRAY,
  COLOR_BLUE,
  COLOR_GREEN,
  COLOR_CYAN,
  COLOR_RED,
  COLOR_PINK,
  COLOR_YELLOW,
  COLOR_WHITE
};

std::string gettextColorCode(const int textColor);

std::string getbackgroundColorCode(const int backgroundColor);

std::string getPrintColor(const int textColor);

std::string getPrintColor(const int textColor, const int backgroundColor);

void printColor(const int textColor);

void printColor(const int textColor, const int backgroundColor);

void printColorReset();

void println(const std::string &str="");

void print(const std::string &str="");

void print(const std::string &str, const int textColor);

void print(const std::string &str, const int textColor, const int backgroundColor);

void printNoReset(const std::string &str, const int textColor);

void printNoReset(const std::string &str, const int textColor, const int backgroundColor);

#endif // COLORCONSOLE_H
